/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Client;

import Common.Message;
import Server.MailServer;
import java.util.LinkedList;
import java.util.List;

/**
 *
 * @author ever rodrigues 
 * @author luis felipe
 * @author abel jaldin
 */
public class MailClient {

    String usuario;
    MailServer server;
    /**
     * This list will contains the current messages list of this mailclient
     * based on its username denoted by
     * <code>usuario</code>
     *
     * @autor Wilson Rolando Crespo Omonte
     */
    List<Message> messages;
    /**
     * 
     * @return retorna el nombre del usuario
     */
    public String getUsuario() {
        return usuario;
    }
/**
 * 
 * @param asigna el nombre del parametro
 */
    public void setUsuario(String usuario) {
        this.usuario = usuario;
    }
/**
 * este metodo crea un mail cliente recibe 2 parametros
 * @param usuario el nombre del usuaro
 * @param server asigna un usuario al al servidor server y si no existe lo crea
 */
    public MailClient(String usuario, MailServer server) {
        this.messages = new LinkedList<>();
        this.usuario = usuario;
        if (server == null) {
            server = new MailServer(this.usuario);
        } else {
            this.server = server;
        }
        server.addUser(usuario);

    }
/**
 * 
 *
 * @return numero de mensajes resividos
 */
   public int checkMessages() {
        
        return this.server.getMessagesWaiting(this.usuario);
    }
/**
 * este metodo retorna ul ultimo mensaje del usuario actual
 * @return mensaje
 */
    public Message readNextMessage() {
        return this.server.getNextMessage(this.usuario);
    }
/**
 * este metodo envia un mensaje dado
 * @param mensaje a enviar
 */
    public void sendMessage(Message m) {
        this.server.post(m);
    }
}
